package anaydis.sort.benchmark;

import anaydis.sort.Sorter;

/**
 * Sorter que provee información de performance sobre su ejecución.
 */
public interface BenchmarkSorter extends Sorter {


    /**
     * Calcula la cantidad de movimientos en el set de datos corriente necesarios para ordenarlo.
     * @return la cantidad de movimientos en el set de datos corriente necesarios para ordenarlo.
     */
    int moves();

    /**
     * Calcula la cantidad de comparaciones realizadas entre elementos del set de datos corriente, necesarias para ordenarlo.
     * @return la cantidad de comparaciones realizadas entre elementos del set de datos corriente, necesarias para ordenarlo.
     */
    int comparisons();

    /**
     * Calcula el tiempo de ejecución necesario para ordenar el set de datos corriente.
     * @return el tiempo de ejecución necesario para ordenar el set de datos corriente en milisegundos.
     */
    long runningTime();

}
